// abort方法就是不要promise这次成功的结果
// 超时异常处理，中断一个Promise
let p1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("成功了");
  }, 3000);
});
function wrap(p1) {
  // p1是用户API的，我再内部在构建一个promise 和 用户传入的组成一队
  let abort;
  let p2 = new Promise((resolve, reject) => {
    // 空的promise 没有任何含义
    abort = reject;
  });
  let newP = Promise.race([p1, p2]);
  newP.abort = abort;
  return newP;
}

let p2 = wrap(p1);
p2.then((data) => {
  console.log(data);
}).catch((err) => {
  console.log(err);
});
setTimeout(() => {
//   p2.abort("错误信息"); // 如果超过时间就让这个promise失败掉
}, 2000);
